<?php
// src/Pyaf/GymBundle/Controller/AdminAlumnoController.php
namespace Pyaf\GymBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use Pyaf\GymBundle\Entity\Alumno;
use Pyaf\GymBundle\Entity\Cuota;
use Pyaf\GymBundle\Form\AlumnoType;
/**
 * Description of AdminAlumnoController
 *
 * @author Toshiba P755-S5272
 */
class AdminAlumnoController extends Controller{
   
    
    public function listAction() {
        $em = $this->getDoctrine()->getEntityManager()->getRepository('PyafGymBundle:Alumno');
        $alumnos = $em->findAllOrderByNombre();
        return $this->render('PyafGymBundle:AdminAlumno:list.html.twig', array('alumnos' => $alumnos));
    }
    
    public function newAction() {
        date_default_timezone_set('America/Argentina/Buenos_Aires');
        $peticion = $this->getRequest();
                
        $alumno = new Alumno();     
        $form = $this->createForm(new AlumnoType(), $alumno);
        
        if ($peticion->getMethod() == 'POST') {
            $form->bindRequest($peticion);
            if ($form->isValid()) {
                $em = $this->getDoctrine()->getEntityManager();
                $alumno = $form->getData();
                $alumno->getPersona()->setHabilitado(true);
                $em->clear();
                $em->persist($alumno);
                $em->flush();
                
                /*
                 * dar de alta la cuota para el alumno
                 */
                $cuota = new Cuota();
                $cuota->setAlumno($alumno);
                $cuota->setMonto($alumno->getCuota());
                $cuota->setMesAbono(date('m-Y'));
                $cuota->setCodCuota($alumno->getId().date('mY'));
                $cuota->setEstado(false);
                $em->persist($cuota);
                $em->flush();
                /*
                 * fin alta cuota
                 */
                
                $this->get('session')
                         ->setFlash(
                                        'alertaAdminAlumnoSuccess',
                                        'El nuevo alumno ('.$alumno->getNombreCompleto().') ha sido dado alta correctamente!'
                                    );
                
                return $this->redirect($this->generateUrl('admin_alumnos_list'));
            } 
        }
        
        return $this->render('PyafGymBundle:AdminAlumno:new.html.twig', array(
            'form' => $form->createView(),
        ));
    }
    
    public function editAction($id)
    {
        $peticion = $this->get('request');
        $em = $this->getDoctrine()->getEntityManager();

        if (null == $alumno = $em->find('PyafGymBundle:Alumno', $id)) {
            throw new NotFoundHttpException('No existe el profesor que se quiere modificar');
        }

        $formulario = $this->createForm(new AlumnoType(), $alumno);
        $habilitado = $alumno->getPersona()->getHabilitado();
        $formulario->setData($alumno);

        if ($peticion->getMethod() == 'POST') {
            $formulario->bindRequest($peticion);

            if ($formulario->isValid()) {
                $alumno->getPersona()->setHabilitado($habilitado);
                $em->persist($alumno);
                $em->flush();
                
                $this->get('session')
                         ->setFlash(
                                        'alertaAdminAlumnoSuccess',
                                        'El alumno ('.$alumno->getNombreCompleto().') ha sido modificado correctamente!'
                                    );
                return $this->redirect($this->generateUrl('admin_alumnos_list'));
            }
        }
        
        return $this->render('PyafGymBundle:AdminAlumno:edit.html.twig', array(
            'formulario' => $formulario->createView(),
            'alumno'   => $alumno
        ));
    }
    
    public function disableAction($id)
    {
        $em = $this->getDoctrine()->getEntityManager();
        $alumno = $em->find('PyafGymBundle:Alumno', $id);
        
        if (null == $alumno) {
            throw new NotFoundHttpException('No existe el alumno que se quiere modificar');
        } else {  
            $persona = $alumno->getPersona();
            $persona->setHabilitado(!$alumno->getPersona()->getHabilitado());
            $alumno->setPersona($persona);
            $em->getRepository('PyafGymBundle:Alumno')->save($alumno);
            
            if($alumno->getPersona()->getHabilitado()){
                $this->get('session')
                         ->setFlash(
                                        'alertaAdminAlumnoSuccess',
                                        'El alumno ('.$alumno->getNombreCompleto().') ha sido habilitado correctamente!'
                                    );
            } else{
                $this->get('session')
                         ->setFlash(
                                        'alertaAdminAlumnoError',
                                        'El alumno ('.$alumno->getNombreCompleto().') ha sido inhabilitado correctamente!'
                                    );
            }
        }       

        return $this->redirect($this->generateUrl('admin_alumnos_list'));
    }
    
    public function showAction($id){        
        $alumno = new Alumno(); 
        $alumno = $this->getDoctrine()->getEntityManager()->getRepository('PyafGymBundle:Alumno')->findAlumno($id);
        
        $alumno->getPersona()->setEdad($this->calculaedad($alumno->getPersona()->getFechaNacimiento()->format('Y-m-d')));
        
        return $this->render('PyafGymBundle:AdminAlumno:info.html.twig', array('alumno' => $alumno));
    }
    
    function calculaedad($fechanacimiento){
        
        list($ano,$mes,$dia) = explode("-", $fechanacimiento);
        
        $ano_diferencia = date("Y") - $ano;
        $mes_diferencia = date("m") - $mes;
        $dia_diferencia = date("d") - $dia;
        if ($dia_diferencia < 0 || $mes_diferencia < 0)
            $ano_diferencia--;
        
        return $ano_diferencia;
    }
    
    function validateUserAction() {
        $peticion = $this->getRequest();
        $em = $this->getDoctrine()->getEntityManager();
        $exist = false;
        
        $alumno = new Alumno();
        $dni = $peticion->request->get('dni');
        $alumno = $em->getRepository('PyafGymBundle:Alumno')->findUserDni($dni);

        if (!empty($alumno)) {
            $exist = true;
        }
        
        $jsonData = json_encode(array('success' => true, 'exist' => $exist));
        $response = new Response($jsonData);
        return $response;
        
    }
}

?>
